In [ ]:
#%pip install torch torchvision torchaudio
#%pip install ultralytics
In [ ]:
import imageio
import cv2
from ultralytics import YOLO
import matplotlib.pyplot as plt

# Step 1: Extract frames from the GIF
gif_path = 'snail_tracking_full_fast.gif'
frames = imageio.mimread(gif_path)

# Load the YOLO model
model = YOLO('yolov8n.pt')  # Load your trained YOLO model, or use a pre-trained one

# Step 2: Run object detection on each frame
detected_frames = []
for i, frame in enumerate(frames):
    # Convert the frame to OpenCV format (BGR)
    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Perform object detection
    results = model.predict(frame)

    # Annotate the frame with detected objects
    annotated_frame = results[0].plot()
    
    # Convert back to RGB for imageio
    annotated_frame_rgb = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB)
    detected_frames.append(annotated_frame_rgb)

    print(f"Processed frame {i+1}/{len(frames)}")

# Step 3: Save the annotated frames as a new GIF
output_gif_path = 'snail_detection_output.gif'
imageio.mimsave(output_gif_path, detected_frames, duration=1)

print(f"Saved output GIF to {output_gif_path}")

# Step 4: Display one of the detected frames
plt.imshow(detected_frames[0])
plt.axis('off')
plt.show()
Downloading https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8n.pt to 'yolov8n.pt'...
100%|██████████| 6.25M/6.25M [00:00<00:00, 23.0MB/s]
0: 384x640 1 bowl, 55.2ms
Speed: 2.9ms preprocess, 55.2ms inference, 9.7ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 1/20

0: 384x640 1 cup, 1 bowl, 42.8ms
Speed: 3.0ms preprocess, 42.8ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 2/20

0: 384x640 1 bowl, 53.2ms
Speed: 1.6ms preprocess, 53.2ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 3/20

0: 384x640 1 cup, 1 bowl, 80.4ms
Speed: 2.7ms preprocess, 80.4ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 4/20

0: 384x640 1 bowl, 62.6ms
Speed: 1.7ms preprocess, 62.6ms inference, 4.2ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 5/20

0: 384x640 1 bowl, 79.3ms
Speed: 2.2ms preprocess, 79.3ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 6/20

0: 384x640 1 bowl, 36.1ms
Speed: 1.7ms preprocess, 36.1ms inference, 4.9ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 7/20

0: 384x640 1 bowl, 58.6ms
Speed: 2.5ms preprocess, 58.6ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 8/20

0: 384x640 1 bowl, 38.5ms
Speed: 2.1ms preprocess, 38.5ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 9/20

0: 384x640 1 cup, 1 bowl, 61.8ms
Speed: 1.7ms preprocess, 61.8ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 10/20

0: 384x640 1 bowl, 67.9ms
Speed: 1.7ms preprocess, 67.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 11/20

0: 384x640 1 bowl, 38.0ms
Speed: 2.2ms preprocess, 38.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 12/20

0: 384x640 1 bowl, 34.8ms
Speed: 1.6ms preprocess, 34.8ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 13/20

0: 384x640 1 bowl, 36.2ms
Speed: 1.8ms preprocess, 36.2ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 14/20

0: 384x640 1 bowl, 34.4ms
Speed: 1.4ms preprocess, 34.4ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 15/20

0: 384x640 1 bowl, 39.9ms
Speed: 1.4ms preprocess, 39.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 16/20

0: 384x640 1 bowl, 43.8ms
Speed: 1.4ms preprocess, 43.8ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 17/20

0: 384x640 1 bowl, 38.1ms
Speed: 2.7ms preprocess, 38.1ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 18/20

0: 384x640 1 bowl, 41.3ms
Speed: 2.0ms preprocess, 41.3ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 19/20

0: 384x640 1 bowl, 31.0ms
Speed: 1.4ms preprocess, 31.0ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 20/20
Saved output GIF to snail_detection_output.gif
No description has been provided for this image
In [ ]:
import imageio
import os

# Load the GIF
gif_path = 'snail_tracking_full_fast.gif'
frames = imageio.mimread(gif_path)

# Create a directory to save extracted frames
output_dir = 'extracted_frames'
os.makedirs(output_dir, exist_ok=True)

# Save each frame as a separate image
for i, frame in enumerate(frames):
    output_path = os.path.join(output_dir, f'frame_{i+1:02d}.png')
    imageio.imwrite(output_path, frame)
    print(f"Saved {output_path}")

print("All frames have been extracted and saved.")
Saved extracted_frames/frame_01.png
Saved extracted_frames/frame_02.png
Saved extracted_frames/frame_03.png
Saved extracted_frames/frame_04.png
Saved extracted_frames/frame_05.png
Saved extracted_frames/frame_06.png
Saved extracted_frames/frame_07.png
Saved extracted_frames/frame_08.png
Saved extracted_frames/frame_09.png
Saved extracted_frames/frame_10.png
Saved extracted_frames/frame_11.png
Saved extracted_frames/frame_12.png
Saved extracted_frames/frame_13.png
Saved extracted_frames/frame_14.png
Saved extracted_frames/frame_15.png
Saved extracted_frames/frame_16.png
Saved extracted_frames/frame_17.png
Saved extracted_frames/frame_18.png
Saved extracted_frames/frame_19.png
Saved extracted_frames/frame_20.png
All frames have been extracted and saved.
In [ ]:
 
In [ ]:
 

image.png

image-2.png

In [ ]:
import os
import shutil
from sklearn.model_selection import train_test_split

# Define paths
base_path = 'snail-data'
images_path = os.path.join(base_path, 'images')
labels_path = os.path.join(base_path, 'labels')

train_images_path = os.path.join(base_path, 'train/images')
val_images_path = os.path.join(base_path, 'val/images')
train_labels_path = os.path.join(base_path, 'train/labels')
val_labels_path = os.path.join(base_path, 'val/labels')

# Create directories
os.makedirs(train_images_path, exist_ok=True)
os.makedirs(val_images_path, exist_ok=True)
os.makedirs(train_labels_path, exist_ok=True)
os.makedirs(val_labels_path, exist_ok=True)

# Get list of images
images = [f for f in os.listdir(images_path) if f.endswith('.png')]

# Split the data
train_images, val_images = train_test_split(images, test_size=0.2, random_state=42)

# Move files to train and val folders
for img in train_images:
    shutil.move(os.path.join(images_path, img), train_images_path)
    txt_file = img.replace('.png', '.txt')
    shutil.move(os.path.join(labels_path, txt_file), train_labels_path)

for img in val_images:
    shutil.move(os.path.join(images_path, img), val_images_path)
    txt_file = img.replace('.png', '.txt')
    shutil.move(os.path.join(labels_path, txt_file), val_labels_path)
In [ ]:
 
In [ ]:
# Run train.py from within Jupyter Notebook
!python train.py
Ultralytics YOLOv8.2.91 🚀 Python-3.12.5 torch-2.4.1 CPU (Apple M1 Max)
engine/trainer: task=detect, mode=train, model=yolov8n.pt, data=data.yaml, epochs=100, time=None, patience=100, batch=16, imgsz=640, save=True, save_period=1, cache=False, device=cpu, workers=8, project=None, name=snail-detection3, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=/opt/homebrew/runs/detect/snail-detection3
Overriding model.yaml nc=80 with nc=7

                   from  n    params  module                                       arguments                     
  0                  -1  1       464  ultralytics.nn.modules.conv.Conv             [3, 16, 3, 2]                 
  1                  -1  1      4672  ultralytics.nn.modules.conv.Conv             [16, 32, 3, 2]                
  2                  -1  1      7360  ultralytics.nn.modules.block.C2f             [32, 32, 1, True]             
  3                  -1  1     18560  ultralytics.nn.modules.conv.Conv             [32, 64, 3, 2]                
  4                  -1  2     49664  ultralytics.nn.modules.block.C2f             [64, 64, 2, True]             
  5                  -1  1     73984  ultralytics.nn.modules.conv.Conv             [64, 128, 3, 2]               
  6                  -1  2    197632  ultralytics.nn.modules.block.C2f             [128, 128, 2, True]           
  7                  -1  1    295424  ultralytics.nn.modules.conv.Conv             [128, 256, 3, 2]              
  8                  -1  1    460288  ultralytics.nn.modules.block.C2f             [256, 256, 1, True]           
  9                  -1  1    164608  ultralytics.nn.modules.block.SPPF            [256, 256, 5]                 
 10                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']          
 11             [-1, 6]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 12                  -1  1    148224  ultralytics.nn.modules.block.C2f             [384, 128, 1]                 
 13                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']          
 14             [-1, 4]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 15                  -1  1     37248  ultralytics.nn.modules.block.C2f             [192, 64, 1]                  
 16                  -1  1     36992  ultralytics.nn.modules.conv.Conv             [64, 64, 3, 2]                
 17            [-1, 12]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 18                  -1  1    123648  ultralytics.nn.modules.block.C2f             [192, 128, 1]                 
 19                  -1  1    147712  ultralytics.nn.modules.conv.Conv             [128, 128, 3, 2]              
 20             [-1, 9]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 21                  -1  1    493056  ultralytics.nn.modules.block.C2f             [384, 256, 1]                 
 22        [15, 18, 21]  1    752677  ultralytics.nn.modules.head.Detect           [7, [64, 128, 256]]           
Model summary: 225 layers, 3,012,213 parameters, 3,012,197 gradients, 8.2 GFLOPs

Transferred 319/355 items from pretrained weights
TensorBoard: Start with 'tensorboard --logdir /opt/homebrew/runs/detect/snail-detection3', view at http://localhost:6006/
Freezing layer 'model.22.dfl.conv.weight'
train: Scanning /Users/alexsciuto/Library/Mobile Documents/com~apple~CloudDocs/D
train: New cache created: /Users/alexsciuto/Library/Mobile Documents/com~apple~CloudDocs/DataWithAlex/snail-tracker/snail-data/train/labels.cache
val: Scanning /Users/alexsciuto/Library/Mobile Documents/com~apple~CloudDocs/Dat
val: New cache created: /Users/alexsciuto/Library/Mobile Documents/com~apple~CloudDocs/DataWithAlex/snail-tracker/snail-data/val/labels.cache
Plotting labels to /opt/homebrew/runs/detect/snail-detection3/labels.jpg... 
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically... 
optimizer: AdamW(lr=0.000909, momentum=0.9) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias(decay=0.0)
TensorBoard: model graph visualization added ✅
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to /opt/homebrew/runs/detect/snail-detection3
Starting training for 100 epochs...

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      1/100         0G      1.406      4.043      1.375        204        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0123      0.347      0.027     0.0119

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      2/100         0G      1.398       4.09      1.359        234        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.012      0.347      0.044     0.0227

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      3/100         0G      1.445      4.059      1.369        286        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0119      0.347      0.075     0.0603

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      4/100         0G      1.371      4.024      1.345        212        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.012      0.347      0.101     0.0834

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      5/100         0G      1.318       3.94      1.301        233        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.012      0.347      0.174      0.144

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      6/100         0G      1.264       3.84      1.255        230        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0118      0.347      0.181      0.151

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      7/100         0G       1.27      3.811      1.258        199        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0128      0.366      0.201      0.172

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      8/100         0G       1.11      3.773      1.165        234        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0146      0.449      0.185       0.15

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      9/100         0G      1.148      3.639       1.19        205        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0168       0.47        0.2       0.16

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     10/100         0G      1.063      3.581      1.079        214        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0191      0.532       0.19      0.144

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     11/100         0G      1.124      3.463      1.117        190        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.022      0.634      0.205      0.159

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     12/100         0G        1.1       3.54      1.069        243        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0222      0.634      0.233      0.189

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     13/100         0G      1.193      3.342      1.184        164        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0243      0.718      0.268      0.221

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     14/100         0G      1.068      3.276       1.04        248        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0255      0.759      0.295      0.246

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     15/100         0G      1.064      3.201      1.048        225        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0263      0.759      0.286      0.242

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     16/100         0G          1      3.044      1.012        264        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0273      0.759       0.27      0.225

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     17/100         0G      1.066      2.845      1.074        234        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0286      0.759      0.271      0.226

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     18/100         0G     0.9923      2.659      1.013        251        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0286      0.759      0.271      0.226

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     19/100         0G      1.013      2.813       1.01        278        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0314      0.778      0.285      0.233

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     20/100         0G     0.9826      2.558      1.011        219        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0314      0.778      0.285      0.233

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     21/100         0G     0.9568      2.568      1.027        233        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.034      0.778      0.352      0.283

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     22/100         0G      1.103      2.468      1.089        213        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.034      0.778      0.352      0.283

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     23/100         0G      1.041      2.464      1.075        223        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.036      0.778      0.406      0.322

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     24/100         0G      1.079      2.371      1.066        219        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.036      0.778      0.406      0.322

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     25/100         0G      1.014      2.271      1.053        205        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0384      0.778      0.419      0.337

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     26/100         0G      1.024      2.076      1.081        205        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0384      0.778      0.419      0.337

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     27/100         0G       1.07        2.2      1.077        225        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0468      0.833      0.441      0.357

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     28/100         0G      1.062      2.035      1.062        263        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0468      0.833      0.441      0.357

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     29/100         0G      1.009      1.974      1.042        218        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0533      0.833      0.483      0.403

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     30/100         0G     0.9945      2.103      1.072        201        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0533      0.833      0.483      0.403

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     31/100         0G      1.113      1.986      1.072        213        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0562      0.667      0.475      0.407

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     32/100         0G      1.037      1.819      1.043        264        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0562      0.667      0.475      0.407

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     33/100         0G      1.027      1.791      1.033        277        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0565      0.667      0.507      0.439

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     34/100         0G      1.031        1.6      1.048        228        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32     0.0565      0.667      0.507      0.439

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     35/100         0G      1.019       1.84      1.016        282        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.657      0.606      0.511      0.445

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     36/100         0G     0.9679      1.574      1.023        232        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.657      0.606      0.511      0.445

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     37/100         0G      1.009      1.721      1.103        206        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.807      0.425      0.511      0.442

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     38/100         0G     0.9752      1.572      1.027        246        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.807      0.425      0.511      0.442

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     39/100         0G      1.023      1.556      1.062        218        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.811      0.424      0.547      0.464

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     40/100         0G     0.9317      1.477      1.042        226        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.811      0.424      0.547      0.464

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     41/100         0G     0.9648      1.494      1.067        269        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.775       0.41      0.559      0.466

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     42/100         0G     0.9885      1.427      1.064        211        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.775       0.41      0.559      0.466

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     43/100         0G     0.9654       1.37      1.039        232        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.814      0.406      0.589      0.486

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     44/100         0G     0.9514      1.257      1.021        218        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.814      0.406      0.589      0.486

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     45/100         0G     0.9986       1.41       1.03        288        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.919      0.228      0.682      0.536

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     46/100         0G     0.9594      1.464       1.02        204        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.919      0.228      0.682      0.536

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     47/100         0G     0.9652      1.352      1.014        243        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.916      0.228      0.702      0.564

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     48/100         0G     0.9939        1.5      1.071        176        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.916      0.228      0.702      0.564

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     49/100         0G     0.9639      1.103      1.019        271        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.823      0.494      0.671      0.543

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     50/100         0G     0.9691      1.381      1.016        239        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.823      0.494      0.671      0.543

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     51/100         0G      1.004      1.201      1.011        286        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.101      0.773      0.612      0.509

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     52/100         0G      0.948      1.207      1.048        224        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.101      0.773      0.612      0.509

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     53/100         0G     0.8988      1.065      1.005        269        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.101      0.773      0.612      0.509

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     54/100         0G     0.9405      1.166      1.033        186        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.811      0.484      0.599      0.498

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     55/100         0G     0.8745      1.066      1.024        178        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.811      0.484      0.599      0.498

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     56/100         0G     0.8914      1.165     0.9998        209        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.811      0.484      0.599      0.498

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     57/100         0G     0.9111      1.347     0.9896        247        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.935      0.222      0.606      0.482

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     58/100         0G      0.902       1.13     0.9904        260        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.935      0.222      0.606      0.482

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     59/100         0G      0.934      1.193      1.004        271        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.935      0.222      0.606      0.482

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     60/100         0G     0.9166      1.108     0.9672        283        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.869      0.303      0.649      0.516

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     61/100         0G      0.896      1.197      0.989        232        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.869      0.303      0.649      0.516

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     62/100         0G     0.8933      1.118     0.9988        255        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.869      0.303      0.649      0.516

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     63/100         0G     0.8904      1.048      1.013        218        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.871      0.315      0.751      0.601

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     64/100         0G     0.8871      1.107     0.9791        266        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.871      0.315      0.751      0.601

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     65/100         0G      0.914      1.181      1.052        187        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.871      0.315      0.751      0.601

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     66/100         0G     0.8898      1.187       1.02        212        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.871      0.319      0.772      0.615

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     67/100         0G     0.8704       1.07     0.9914        226        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.871      0.319      0.772      0.615

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     68/100         0G     0.8865      1.108     0.9771        246        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.871      0.319      0.772      0.615

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     69/100         0G     0.9107      1.125     0.9971        261        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.869       0.32      0.772      0.616

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     70/100         0G     0.8774      1.021     0.9794        206        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.869       0.32      0.772      0.616

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     71/100         0G     0.8639      1.046     0.9659        271        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.869       0.32      0.772      0.616

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     72/100         0G      0.897     0.9755      1.001        244        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.868      0.321      0.795      0.643

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     73/100         0G     0.8599     0.9553      1.001        221        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.868      0.321      0.795      0.643

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     74/100         0G      0.893      1.106     0.9647        312        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.868      0.321      0.795      0.643

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     75/100         0G     0.9045      1.111      1.012        195        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.868      0.322      0.825      0.637

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     76/100         0G     0.8544      1.051     0.9883        207        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.868      0.322      0.825      0.637

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     77/100         0G      0.871     0.9894     0.9982        195        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.868      0.322      0.825      0.637

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     78/100         0G     0.8806     0.9951     0.9848        229        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.878      0.364      0.849      0.649

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     79/100         0G     0.8669      1.014     0.9735        273        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.878      0.364      0.849      0.649

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     80/100         0G     0.8503     0.9945      1.066        148        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.878      0.364      0.849      0.649

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     81/100         0G     0.8444     0.9236      0.988        248        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.874      0.426      0.849      0.655

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     82/100         0G     0.8355     0.8656     0.9544        220        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.874      0.426      0.849      0.655

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     83/100         0G     0.8356     0.9086     0.9765        208        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.874      0.426      0.849      0.655

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     84/100         0G     0.8529      1.006     0.9841        241        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32       0.88      0.502      0.849      0.664

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     85/100         0G     0.8454      1.001     0.9679        271        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32       0.88      0.502      0.849      0.664

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     86/100         0G     0.8573     0.9369     0.9626        278        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32       0.88      0.502      0.849      0.664

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     87/100         0G     0.7955      1.057     0.9507        223        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32       0.88      0.502      0.849      0.664

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     88/100         0G     0.7999     0.9166     0.9814        193        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.816      0.601      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     89/100         0G     0.8196     0.9903     0.9519        250        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.816      0.601      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     90/100         0G      0.815     0.9793      1.004        189        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.816      0.601      0.851      0.659
Closing dataloader mosaic

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     91/100         0G     0.8138     0.9869     0.9655        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.816      0.601      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     92/100         0G     0.8463      1.072     0.9563        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.668      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     93/100         0G     0.8194      1.021     0.9929        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.668      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     94/100         0G     0.7969     0.9752     0.9587        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.668      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     95/100         0G      0.821      1.005     0.9721        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.668      0.851      0.659

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     96/100         0G     0.8167     0.9854     0.9998        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.694      0.859      0.662

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     97/100         0G     0.8381      1.024     0.9438        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.694      0.859      0.662

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     98/100         0G     0.8309      1.007      1.004        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.694      0.859      0.662

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     99/100         0G     0.7944     0.9785     0.9777        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.827      0.694      0.859      0.662

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
    100/100         0G      0.786     0.9887      0.976        118        640: 1
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32      0.783      0.839      0.857      0.662

100 epochs completed in 0.218 hours.
Optimizer stripped from /opt/homebrew/runs/detect/snail-detection3/weights/last.pt, 6.2MB
Optimizer stripped from /opt/homebrew/runs/detect/snail-detection3/weights/best.pt, 6.2MB

Validating /opt/homebrew/runs/detect/snail-detection3/weights/best.pt...
Ultralytics YOLOv8.2.91 🚀 Python-3.12.5 torch-2.4.1 CPU (Apple M1 Max)
Model summary (fused): 168 layers, 3,007,013 parameters, 0 gradients, 8.1 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32       0.88      0.502      0.849      0.663
              Cucumber          4          9      0.813      0.778      0.762      0.603
                 Snail          4          4          1      0.359      0.995      0.485
            Snail Food          4          4          1          0      0.845      0.713
            Water Bowl          3          3      0.607          1      0.995      0.913
            Hydrometer          4          4          1          0        0.6      0.477
               Lettuce          4          8      0.858      0.875        0.9      0.784
Speed: 0.3ms preprocess, 43.3ms inference, 0.0ms loss, 1.8ms postprocess per image
Results saved to /opt/homebrew/runs/detect/snail-detection3
Ultralytics YOLOv8.2.91 🚀 Python-3.12.5 torch-2.4.1 CPU (Apple M1 Max)
Model summary (fused): 168 layers, 3,007,013 parameters, 0 gradients, 8.1 GFLOPs
val: Scanning /Users/alexsciuto/Library/Mobile Documents/com~apple~CloudDocs/Dat
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all          4         32       0.88      0.502      0.849      0.663
              Cucumber          4          9      0.813      0.778      0.762      0.603
                 Snail          4          4          1      0.359      0.995      0.485
            Snail Food          4          4          1          0      0.845      0.713
            Water Bowl          3          3      0.607          1      0.995      0.913
            Hydrometer          4          4          1          0        0.6      0.477
               Lettuce          4          8      0.858      0.875        0.9      0.784
Speed: 0.3ms preprocess, 48.1ms inference, 0.0ms loss, 2.1ms postprocess per image
Results saved to /opt/homebrew/runs/detect/snail-detection32
Ultralytics YOLOv8.2.91 🚀 Python-3.12.5 torch-2.4.1 CPU (Apple M1 Max)

PyTorch: starting from '/opt/homebrew/runs/detect/snail-detection3/weights/best.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 11, 8400) (5.9 MB)
requirements: Ultralytics requirement ['onnx>=1.12.0'] not found, attempting AutoUpdate...
Collecting onnx>=1.12.0
  Downloading onnx-1.16.2-cp312-cp312-macosx_11_0_universal2.whl.metadata (16 kB)
Requirement already satisfied: numpy>=1.20 in ./env/lib/python3.12/site-packages (from onnx>=1.12.0) (1.26.4)
Requirement already satisfied: protobuf>=3.20.2 in ./env/lib/python3.12/site-packages (from onnx>=1.12.0) (4.25.4)
Downloading onnx-1.16.2-cp312-cp312-macosx_11_0_universal2.whl (16.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.5/16.5 MB 26.0 MB/s eta 0:00:00a 0:00:01
Installing collected packages: onnx
Successfully installed onnx-1.16.2

requirements: AutoUpdate success ✅ 4.3s, installed 1 package: ['onnx>=1.12.0']
requirements: ⚠️ Restart runtime or rerun command for updates to take effect


ONNX: starting export with onnx 1.16.2 opset 19...
ONNX: export success ✅ 5.1s, saved as '/opt/homebrew/runs/detect/snail-detection3/weights/best.onnx' (11.7 MB)

Export complete (5.4s)
Results saved to /opt/homebrew/runs/detect/snail-detection3/weights
Predict:         yolo predict task=detect model=/opt/homebrew/runs/detect/snail-detection3/weights/best.onnx imgsz=640  
Validate:        yolo val task=detect model=/opt/homebrew/runs/detect/snail-detection3/weights/best.onnx imgsz=640 data=data.yaml  
Visualize:       https://netron.app
Training completed. Checkpoints are saved in the 'runs' directory.
Validation metrics: ultralytics.utils.metrics.DetMetrics object with attributes:

ap_class_index: array([0, 1, 2, 3, 4, 5])
box: ultralytics.utils.metrics.Metric object
confusion_matrix: <ultralytics.utils.metrics.ConfusionMatrix object at 0x315700a40>
curves: ['Precision-Recall(B)', 'F1-Confidence(B)', 'Precision-Confidence(B)', 'Recall-Confidence(B)']
curves_results: [[array([          0,    0.001001,    0.002002,    0.003003,    0.004004,    0.005005,    0.006006,    0.007007,    0.008008,    0.009009,     0.01001,    0.011011,    0.012012,    0.013013,    0.014014,    0.015015,    0.016016,    0.017017,    0.018018,    0.019019,     0.02002,    0.021021,    0.022022,    0.023023,
          0.024024,    0.025025,    0.026026,    0.027027,    0.028028,    0.029029,     0.03003,    0.031031,    0.032032,    0.033033,    0.034034,    0.035035,    0.036036,    0.037037,    0.038038,    0.039039,     0.04004,    0.041041,    0.042042,    0.043043,    0.044044,    0.045045,    0.046046,    0.047047,
          0.048048,    0.049049,     0.05005,    0.051051,    0.052052,    0.053053,    0.054054,    0.055055,    0.056056,    0.057057,    0.058058,    0.059059,     0.06006,    0.061061,    0.062062,    0.063063,    0.064064,    0.065065,    0.066066,    0.067067,    0.068068,    0.069069,     0.07007,    0.071071,
          0.072072,    0.073073,    0.074074,    0.075075,    0.076076,    0.077077,    0.078078,    0.079079,     0.08008,    0.081081,    0.082082,    0.083083,    0.084084,    0.085085,    0.086086,    0.087087,    0.088088,    0.089089,     0.09009,    0.091091,    0.092092,    0.093093,    0.094094,    0.095095,
          0.096096,    0.097097,    0.098098,    0.099099,      0.1001,      0.1011,      0.1021,      0.1031,      0.1041,     0.10511,     0.10611,     0.10711,     0.10811,     0.10911,     0.11011,     0.11111,     0.11211,     0.11311,     0.11411,     0.11512,     0.11612,     0.11712,     0.11812,     0.11912,
           0.12012,     0.12112,     0.12212,     0.12312,     0.12412,     0.12513,     0.12613,     0.12713,     0.12813,     0.12913,     0.13013,     0.13113,     0.13213,     0.13313,     0.13413,     0.13514,     0.13614,     0.13714,     0.13814,     0.13914,     0.14014,     0.14114,     0.14214,     0.14314,
           0.14414,     0.14515,     0.14615,     0.14715,     0.14815,     0.14915,     0.15015,     0.15115,     0.15215,     0.15315,     0.15415,     0.15516,     0.15616,     0.15716,     0.15816,     0.15916,     0.16016,     0.16116,     0.16216,     0.16316,     0.16416,     0.16517,     0.16617,     0.16717,
           0.16817,     0.16917,     0.17017,     0.17117,     0.17217,     0.17317,     0.17417,     0.17518,     0.17618,     0.17718,     0.17818,     0.17918,     0.18018,     0.18118,     0.18218,     0.18318,     0.18418,     0.18519,     0.18619,     0.18719,     0.18819,     0.18919,     0.19019,     0.19119,
           0.19219,     0.19319,     0.19419,      0.1952,      0.1962,      0.1972,      0.1982,      0.1992,      0.2002,      0.2012,      0.2022,      0.2032,      0.2042,     0.20521,     0.20621,     0.20721,     0.20821,     0.20921,     0.21021,     0.21121,     0.21221,     0.21321,     0.21421,     0.21522,
           0.21622,     0.21722,     0.21822,     0.21922,     0.22022,     0.22122,     0.22222,     0.22322,     0.22422,     0.22523,     0.22623,     0.22723,     0.22823,     0.22923,     0.23023,     0.23123,     0.23223,     0.23323,     0.23423,     0.23524,     0.23624,     0.23724,     0.23824,     0.23924,
           0.24024,     0.24124,     0.24224,     0.24324,     0.24424,     0.24525,     0.24625,     0.24725,     0.24825,     0.24925,     0.25025,     0.25125,     0.25225,     0.25325,     0.25425,     0.25526,     0.25626,     0.25726,     0.25826,     0.25926,     0.26026,     0.26126,     0.26226,     0.26326,
           0.26426,     0.26527,     0.26627,     0.26727,     0.26827,     0.26927,     0.27027,     0.27127,     0.27227,     0.27327,     0.27427,     0.27528,     0.27628,     0.27728,     0.27828,     0.27928,     0.28028,     0.28128,     0.28228,     0.28328,     0.28428,     0.28529,     0.28629,     0.28729,
           0.28829,     0.28929,     0.29029,     0.29129,     0.29229,     0.29329,     0.29429,      0.2953,      0.2963,      0.2973,      0.2983,      0.2993,      0.3003,      0.3013,      0.3023,      0.3033,      0.3043,     0.30531,     0.30631,     0.30731,     0.30831,     0.30931,     0.31031,     0.31131,
           0.31231,     0.31331,     0.31431,     0.31532,     0.31632,     0.31732,     0.31832,     0.31932,     0.32032,     0.32132,     0.32232,     0.32332,     0.32432,     0.32533,     0.32633,     0.32733,     0.32833,     0.32933,     0.33033,     0.33133,     0.33233,     0.33333,     0.33433,     0.33534,
           0.33634,     0.33734,     0.33834,     0.33934,     0.34034,     0.34134,     0.34234,     0.34334,     0.34434,     0.34535,     0.34635,     0.34735,     0.34835,     0.34935,     0.35035,     0.35135,     0.35235,     0.35335,     0.35435,     0.35536,     0.35636,     0.35736,     0.35836,     0.35936,
           0.36036,     0.36136,     0.36236,     0.36336,     0.36436,     0.36537,     0.36637,     0.36737,     0.36837,     0.36937,     0.37037,     0.37137,     0.37237,     0.37337,     0.37437,     0.37538,     0.37638,     0.37738,     0.37838,     0.37938,     0.38038,     0.38138,     0.38238,     0.38338,
           0.38438,     0.38539,     0.38639,     0.38739,     0.38839,     0.38939,     0.39039,     0.39139,     0.39239,     0.39339,     0.39439,      0.3954,      0.3964,      0.3974,      0.3984,      0.3994,      0.4004,      0.4014,      0.4024,      0.4034,      0.4044,     0.40541,     0.40641,     0.40741,
           0.40841,     0.40941,     0.41041,     0.41141,     0.41241,     0.41341,     0.41441,     0.41542,     0.41642,     0.41742,     0.41842,     0.41942,     0.42042,     0.42142,     0.42242,     0.42342,     0.42442,     0.42543,     0.42643,     0.42743,     0.42843,     0.42943,     0.43043,     0.43143,
           0.43243,     0.43343,     0.43443,     0.43544,     0.43644,     0.43744,     0.43844,     0.43944,     0.44044,     0.44144,     0.44244,     0.44344,     0.44444,     0.44545,     0.44645,     0.44745,     0.44845,     0.44945,     0.45045,     0.45145,     0.45245,     0.45345,     0.45445,     0.45546,
           0.45646,     0.45746,     0.45846,     0.45946,     0.46046,     0.46146,     0.46246,     0.46346,     0.46446,     0.46547,     0.46647,     0.46747,     0.46847,     0.46947,     0.47047,     0.47147,     0.47247,     0.47347,     0.47447,     0.47548,     0.47648,     0.47748,     0.47848,     0.47948,
           0.48048,     0.48148,     0.48248,     0.48348,     0.48448,     0.48549,     0.48649,     0.48749,     0.48849,     0.48949,     0.49049,     0.49149,     0.49249,     0.49349,     0.49449,      0.4955,      0.4965,      0.4975,      0.4985,      0.4995,      0.5005,      0.5015,      0.5025,      0.5035,
            0.5045,     0.50551,     0.50651,     0.50751,     0.50851,     0.50951,     0.51051,     0.51151,     0.51251,     0.51351,     0.51451,     0.51552,     0.51652,     0.51752,     0.51852,     0.51952,     0.52052,     0.52152,     0.52252,     0.52352,     0.52452,     0.52553,     0.52653,     0.52753,
           0.52853,     0.52953,     0.53053,     0.53153,     0.53253,     0.53353,     0.53453,     0.53554,     0.53654,     0.53754,     0.53854,     0.53954,     0.54054,     0.54154,     0.54254,     0.54354,     0.54454,     0.54555,     0.54655,     0.54755,     0.54855,     0.54955,     0.55055,     0.55155,
           0.55255,     0.55355,     0.55455,     0.55556,     0.55656,     0.55756,     0.55856,     0.55956,     0.56056,     0.56156,     0.56256,     0.56356,     0.56456,     0.56557,     0.56657,     0.56757,     0.56857,     0.56957,     0.57057,     0.57157,     0.57257,     0.57357,     0.57457,     0.57558,
           0.57658,     0.57758,     0.57858,     0.57958,     0.58058,     0.58158,     0.58258,     0.58358,     0.58458,     0.58559,     0.58659,     0.58759,     0.58859,     0.58959,     0.59059,     0.59159,     0.59259,     0.59359,     0.59459,      0.5956,      0.5966,      0.5976,      0.5986,      0.5996,
            0.6006,      0.6016,      0.6026,      0.6036,      0.6046,     0.60561,     0.60661,     0.60761,     0.60861,     0.60961,     0.61061,     0.61161,     0.61261,     0.61361,     0.61461,     0.61562,     0.61662,     0.61762,     0.61862,     0.61962,     0.62062,     0.62162,     0.62262,     0.62362,
           0.62462,     0.62563,     0.62663,     0.62763,     0.62863,     0.62963,     0.63063,     0.63163,     0.63263,     0.63363,     0.63463,     0.63564,     0.63664,     0.63764,     0.63864,     0.63964,     0.64064,     0.64164,     0.64264,     0.64364,     0.64464,     0.64565,     0.64665,     0.64765,
           0.64865,     0.64965,     0.65065,     0.65165,     0.65265,     0.65365,     0.65465,     0.65566,     0.65666,     0.65766,     0.65866,     0.65966,     0.66066,     0.66166,     0.66266,     0.66366,     0.66466,     0.66567,     0.66667,     0.66767,     0.66867,     0.66967,     0.67067,     0.67167,
           0.67267,     0.67367,     0.67467,     0.67568,     0.67668,     0.67768,     0.67868,     0.67968,     0.68068,     0.68168,     0.68268,     0.68368,     0.68468,     0.68569,     0.68669,     0.68769,     0.68869,     0.68969,     0.69069,     0.69169,     0.69269,     0.69369,     0.69469,      0.6957,
            0.6967,      0.6977,      0.6987,      0.6997,      0.7007,      0.7017,      0.7027,      0.7037,      0.7047,     0.70571,     0.70671,     0.70771,     0.70871,     0.70971,     0.71071,     0.71171,     0.71271,     0.71371,     0.71471,     0.71572,     0.71672,     0.71772,     0.71872,     0.71972,
           0.72072,     0.72172,     0.72272,     0.72372,     0.72472,     0.72573,     0.72673,     0.72773,     0.72873,     0.72973,     0.73073,     0.73173,     0.73273,     0.73373,     0.73473,     0.73574,     0.73674,     0.73774,     0.73874,     0.73974,     0.74074,     0.74174,     0.74274,     0.74374,
           0.74474,     0.74575,     0.74675,     0.74775,     0.74875,     0.74975,     0.75075,     0.75175,     0.75275,     0.75375,     0.75475,     0.75576,     0.75676,     0.75776,     0.75876,     0.75976,     0.76076,     0.76176,     0.76276,     0.76376,     0.76476,     0.76577,     0.76677,     0.76777,
           0.76877,     0.76977,     0.77077,     0.77177,     0.77277,     0.77377,     0.77477,     0.77578,     0.77678,     0.77778,     0.77878,     0.77978,     0.78078,     0.78178,     0.78278,     0.78378,     0.78478,     0.78579,     0.78679,     0.78779,     0.78879,     0.78979,     0.79079,     0.79179,
           0.79279,     0.79379,     0.79479,      0.7958,      0.7968,      0.7978,      0.7988,      0.7998,      0.8008,      0.8018,      0.8028,      0.8038,      0.8048,     0.80581,     0.80681,     0.80781,     0.80881,     0.80981,     0.81081,     0.81181,     0.81281,     0.81381,     0.81481,     0.81582,
           0.81682,     0.81782,     0.81882,     0.81982,     0.82082,     0.82182,     0.82282,     0.82382,     0.82482,     0.82583,     0.82683,     0.82783,     0.82883,     0.82983,     0.83083,     0.83183,     0.83283,     0.83383,     0.83483,     0.83584,     0.83684,     0.83784,     0.83884,     0.83984,
           0.84084,     0.84184,     0.84284,     0.84384,     0.84484,     0.84585,     0.84685,     0.84785,     0.84885,     0.84985,     0.85085,     0.85185,     0.85285,     0.85385,     0.85485,     0.85586,     0.85686,     0.85786,     0.85886,     0.85986,     0.86086,     0.86186,     0.86286,     0.86386,
           0.86486,     0.86587,     0.86687,     0.86787,     0.86887,     0.86987,     0.87087,     0.87187,     0.87287,     0.87387,     0.87487,     0.87588,     0.87688,     0.87788,     0.87888,     0.87988,     0.88088,     0.88188,     0.88288,     0.88388,     0.88488,     0.88589,     0.88689,     0.88789,
           0.88889,     0.88989,     0.89089,     0.89189,     0.89289,     0.89389,     0.89489,      0.8959,      0.8969,      0.8979,      0.8989,      0.8999,      0.9009,      0.9019,      0.9029,      0.9039,      0.9049,     0.90591,     0.90691,     0.90791,     0.90891,     0.90991,     0.91091,     0.91191,
           0.91291,     0.91391,     0.91491,     0.91592,     0.91692,     0.91792,     0.91892,     0.91992,     0.92092,     0.92192,     0.92292,     0.92392,     0.92492,     0.92593,     0.92693,     0.92793,     0.92893,     0.92993,     0.93093,     0.93193,     0.93293,     0.93393,     0.93493,     0.93594,
           0.93694,     0.93794,     0.93894,     0.93994,     0.94094,     0.94194,     0.94294,     0.94394,     0.94494,     0.94595,     0.94695,     0.94795,     0.94895,     0.94995,     0.95095,     0.95195,     0.95295,     0.95395,     0.95495,     0.95596,     0.95696,     0.95796,     0.95896,     0.95996,
           0.96096,     0.96196,     0.96296,     0.96396,     0.96496,     0.96597,     0.96697,     0.96797,     0.96897,     0.96997,     0.97097,     0.97197,     0.97297,     0.97397,     0.97497,     0.97598,     0.97698,     0.97798,     0.97898,     0.97998,     0.98098,     0.98198,     0.98298,     0.98398,
           0.98498,     0.98599,     0.98699,     0.98799,     0.98899,     0.98999,     0.99099,     0.99199,     0.99299,     0.99399,     0.99499,       0.996,       0.997,       0.998,       0.999,           1]), array([[          1,           1,           1, ...,   0.0032032,   0.0016016,           0],
       [          1,           1,           1, ...,           1,           1,           0],
       [          1,           1,           1, ...,         0.8,         0.8,           0],
       [          1,           1,           1, ...,           1,           1,           0],
       [       0.75,        0.75,        0.75, ...,     0.16667,     0.16667,           0],
       [          1,           1,           1, ...,     0.72727,     0.72727,           0]]), 'Recall', 'Precision'], [array([          0,    0.001001,    0.002002,    0.003003,    0.004004,    0.005005,    0.006006,    0.007007,    0.008008,    0.009009,     0.01001,    0.011011,    0.012012,    0.013013,    0.014014,    0.015015,    0.016016,    0.017017,    0.018018,    0.019019,     0.02002,    0.021021,    0.022022,    0.023023,
          0.024024,    0.025025,    0.026026,    0.027027,    0.028028,    0.029029,     0.03003,    0.031031,    0.032032,    0.033033,    0.034034,    0.035035,    0.036036,    0.037037,    0.038038,    0.039039,     0.04004,    0.041041,    0.042042,    0.043043,    0.044044,    0.045045,    0.046046,    0.047047,
          0.048048,    0.049049,     0.05005,    0.051051,    0.052052,    0.053053,    0.054054,    0.055055,    0.056056,    0.057057,    0.058058,    0.059059,     0.06006,    0.061061,    0.062062,    0.063063,    0.064064,    0.065065,    0.066066,    0.067067,    0.068068,    0.069069,     0.07007,    0.071071,
          0.072072,    0.073073,    0.074074,    0.075075,    0.076076,    0.077077,    0.078078,    0.079079,     0.08008,    0.081081,    0.082082,    0.083083,    0.084084,    0.085085,    0.086086,    0.087087,    0.088088,    0.089089,     0.09009,    0.091091,    0.092092,    0.093093,    0.094094,    0.095095,
          0.096096,    0.097097,    0.098098,    0.099099,      0.1001,      0.1011,      0.1021,      0.1031,      0.1041,     0.10511,     0.10611,     0.10711,     0.10811,     0.10911,     0.11011,     0.11111,     0.11211,     0.11311,     0.11411,     0.11512,     0.11612,     0.11712,     0.11812,     0.11912,
           0.12012,     0.12112,     0.12212,     0.12312,     0.12412,     0.12513,     0.12613,     0.12713,     0.12813,     0.12913,     0.13013,     0.13113,     0.13213,     0.13313,     0.13413,     0.13514,     0.13614,     0.13714,     0.13814,     0.13914,     0.14014,     0.14114,     0.14214,     0.14314,
           0.14414,     0.14515,     0.14615,     0.14715,     0.14815,     0.14915,     0.15015,     0.15115,     0.15215,     0.15315,     0.15415,     0.15516,     0.15616,     0.15716,     0.15816,     0.15916,     0.16016,     0.16116,     0.16216,     0.16316,     0.16416,     0.16517,     0.16617,     0.16717,
           0.16817,     0.16917,     0.17017,     0.17117,     0.17217,     0.17317,     0.17417,     0.17518,     0.17618,     0.17718,     0.17818,     0.17918,     0.18018,     0.18118,     0.18218,     0.18318,     0.18418,     0.18519,     0.18619,     0.18719,     0.18819,     0.18919,     0.19019,     0.19119,
           0.19219,     0.19319,     0.19419,      0.1952,      0.1962,      0.1972,      0.1982,      0.1992,      0.2002,      0.2012,      0.2022,      0.2032,      0.2042,     0.20521,     0.20621,     0.20721,     0.20821,     0.20921,     0.21021,     0.21121,     0.21221,     0.21321,     0.21421,     0.21522,
           0.21622,     0.21722,     0.21822,     0.21922,     0.22022,     0.22122,     0.22222,     0.22322,     0.22422,     0.22523,     0.22623,     0.22723,     0.22823,     0.22923,     0.23023,     0.23123,     0.23223,     0.23323,     0.23423,     0.23524,     0.23624,     0.23724,     0.23824,     0.23924,
           0.24024,     0.24124,     0.24224,     0.24324,     0.24424,     0.24525,     0.24625,     0.24725,     0.24825,     0.24925,     0.25025,     0.25125,     0.25225,     0.25325,     0.25425,     0.25526,     0.25626,     0.25726,     0.25826,     0.25926,     0.26026,     0.26126,     0.26226,     0.26326,
           0.26426,     0.26527,     0.26627,     0.26727,     0.26827,     0.26927,     0.27027,     0.27127,     0.27227,     0.27327,     0.27427,     0.27528,     0.27628,     0.27728,     0.27828,     0.27928,     0.28028,     0.28128,     0.28228,     0.28328,     0.28428,     0.28529,     0.28629,     0.28729,
           0.28829,     0.28929,     0.29029,     0.29129,     0.29229,     0.29329,     0.29429,      0.2953,      0.2963,      0.2973,      0.2983,      0.2993,      0.3003,      0.3013,      0.3023,      0.3033,      0.3043,     0.30531,     0.30631,     0.30731,     0.30831,     0.30931,     0.31031,     0.31131,
           0.31231,     0.31331,     0.31431,     0.31532,     0.31632,     0.31732,     0.31832,     0.31932,     0.32032,     0.32132,     0.32232,     0.32332,     0.32432,     0.32533,     0.32633,     0.32733,     0.32833,     0.32933,     0.33033,     0.33133,     0.33233,     0.33333,     0.33433,     0.33534,
           0.33634,     0.33734,     0.33834,     0.33934,     0.34034,     0.34134,     0.34234,     0.34334,     0.34434,     0.34535,     0.34635,     0.34735,     0.34835,     0.34935,     0.35035,     0.35135,     0.35235,     0.35335,     0.35435,     0.35536,     0.35636,     0.35736,     0.35836,     0.35936,
           0.36036,     0.36136,     0.36236,     0.36336,     0.36436,     0.36537,     0.36637,     0.36737,     0.36837,     0.36937,     0.37037,     0.37137,     0.37237,     0.37337,     0.37437,     0.37538,     0.37638,     0.37738,     0.37838,     0.37938,     0.38038,     0.38138,     0.38238,     0.38338,
           0.38438,     0.38539,     0.38639,     0.38739,     0.38839,     0.38939,     0.39039,     0.39139,     0.39239,     0.39339,     0.39439,      0.3954,      0.3964,      0.3974,      0.3984,      0.3994,      0.4004,      0.4014,      0.4024,      0.4034,      0.4044,     0.40541,     0.40641,     0.40741,
           0.40841,     0.40941,     0.41041,     0.41141,     0.41241,     0.41341,     0.41441,     0.41542,     0.41642,     0.41742,     0.41842,     0.41942,     0.42042,     0.42142,     0.42242,     0.42342,     0.42442,     0.42543,     0.42643,     0.42743,     0.42843,     0.42943,     0.43043,     0.43143,
           0.43243,     0.43343,     0.43443,     0.43544,     0.43644,     0.43744,     0.43844,     0.43944,     0.44044,     0.44144,     0.44244,     0.44344,     0.44444,     0.44545,     0.44645,     0.44745,     0.44845,     0.44945,     0.45045,     0.45145,     0.45245,     0.45345,     0.45445,     0.45546,
           0.45646,     0.45746,     0.45846,     0.45946,     0.46046,     0.46146,     0.46246,     0.46346,     0.46446,     0.46547,     0.46647,     0.46747,     0.46847,     0.46947,     0.47047,     0.47147,     0.47247,     0.47347,     0.47447,     0.47548,     0.47648,     0.47748,     0.47848,     0.47948,
           0.48048,     0.48148,     0.48248,     0.48348,     0.48448,     0.48549,     0.48649,     0.48749,     0.48849,     0.48949,     0.49049,     0.49149,     0.49249,     0.49349,     0.49449,      0.4955,      0.4965,      0.4975,      0.4985,      0.4995,      0.5005,      0.5015,      0.5025,      0.5035,
            0.5045,     0.50551,     0.50651,     0.50751,     0.50851,     0.50951,     0.51051,     0.51151,     0.51251,     0.51351,     0.51451,     0.51552,     0.51652,     0.51752,     0.51852,     0.51952,     0.52052,     0.52152,     0.52252,     0.52352,     0.52452,     0.52553,     0.52653,     0.52753,
           0.52853,     0.52953,     0.53053,     0.53153,     0.53253,     0.53353,     0.53453,     0.53554,     0.53654,     0.53754,     0.53854,     0.53954,     0.54054,     0.54154,     0.54254,     0.54354,     0.54454,     0.54555,     0.54655,     0.54755,     0.54855,     0.54955,     0.55055,     0.55155,
           0.55255,     0.55355,     0.55455,     0.55556,     0.55656,     0.55756,     0.55856,     0.55956,     0.56056,     0.56156,     0.56256,     0.56356,     0.56456,     0.56557,     0.56657,     0.56757,     0.56857,     0.56957,     0.57057,     0.57157,     0.57257,     0.57357,     0.57457,     0.57558,
           0.57658,     0.57758,     0.57858,     0.57958,     0.58058,     0.58158,     0.58258,     0.58358,     0.58458,     0.58559,     0.58659,     0.58759,     0.58859,     0.58959,     0.59059,     0.59159,     0.59259,     0.59359,     0.59459,      0.5956,      0.5966,      0.5976,      0.5986,      0.5996,
            0.6006,      0.6016,      0.6026,      0.6036,      0.6046,     0.60561,     0.60661,     0.60761,     0.60861,     0.60961,     0.61061,     0.61161,     0.61261,     0.61361,     0.61461,     0.61562,     0.61662,     0.61762,     0.61862,     0.61962,     0.62062,     0.62162,     0.62262,     0.62362,
           0.62462,     0.62563,     0.62663,     0.62763,     0.62863,     0.62963,     0.63063,     0.63163,     0.63263,     0.63363,     0.63463,     0.63564,     0.63664,     0.63764,     0.63864,     0.63964,     0.64064,     0.64164,     0.64264,     0.64364,     0.64464,     0.64565,     0.64665,     0.64765,
           0.64865,     0.64965,     0.65065,     0.65165,     0.65265,     0.65365,     0.65465,     0.65566,     0.65666,     0.65766,     0.65866,     0.65966,     0.66066,     0.66166,     0.66266,     0.66366,     0.66466,     0.66567,     0.66667,     0.66767,     0.66867,     0.66967,     0.67067,     0.67167,
           0.67267,     0.67367,     0.67467,     0.67568,     0.67668,     0.67768,     0.67868,     0.67968,     0.68068,     0.68168,     0.68268,     0.68368,     0.68468,     0.68569,     0.68669,     0.68769,     0.68869,     0.68969,     0.69069,     0.69169,     0.69269,     0.69369,     0.69469,      0.6957,
            0.6967,      0.6977,      0.6987,      0.6997,      0.7007,      0.7017,      0.7027,      0.7037,      0.7047,     0.70571,     0.70671,     0.70771,     0.70871,     0.70971,     0.71071,     0.71171,     0.71271,     0.71371,     0.71471,     0.71572,     0.71672,     0.71772,     0.71872,     0.71972,
           0.72072,     0.72172,     0.72272,     0.72372,     0.72472,     0.72573,     0.72673,     0.72773,     0.72873,     0.72973,     0.73073,     0.73173,     0.73273,     0.73373,     0.73473,     0.73574,     0.73674,     0.73774,     0.73874,     0.73974,     0.74074,     0.74174,     0.74274,     0.74374,
           0.74474,     0.74575,     0.74675,     0.74775,     0.74875,     0.74975,     0.75075,     0.75175,     0.75275,     0.75375,     0.75475,     0.75576,     0.75676,     0.75776,     0.75876,     0.75976,     0.76076,     0.76176,     0.76276,     0.76376,     0.76476,     0.76577,     0.76677,     0.76777,
           0.76877,     0.76977,     0.77077,     0.77177,     0.77277,     0.77377,     0.77477,     0.77578,     0.77678,     0.77778,     0.77878,     0.77978,     0.78078,     0.78178,     0.78278,     0.78378,     0.78478,     0.78579,     0.78679,     0.78779,     0.78879,     0.78979,     0.79079,     0.79179,
           0.79279,     0.79379,     0.79479,      0.7958,      0.7968,      0.7978,      0.7988,      0.7998,      0.8008,      0.8018,      0.8028,      0.8038,      0.8048,     0.80581,     0.80681,     0.80781,     0.80881,     0.80981,     0.81081,     0.81181,     0.81281,     0.81381,     0.81481,     0.81582,
           0.81682,     0.81782,     0.81882,     0.81982,     0.82082,     0.82182,     0.82282,     0.82382,     0.82482,     0.82583,     0.82683,     0.82783,     0.82883,     0.82983,     0.83083,     0.83183,     0.83283,     0.83383,     0.83483,     0.83584,     0.83684,     0.83784,     0.83884,     0.83984,
           0.84084,     0.84184,     0.84284,     0.84384,     0.84484,     0.84585,     0.84685,     0.84785,     0.84885,     0.84985,     0.85085,     0.85185,     0.85285,     0.85385,     0.85485,     0.85586,     0.85686,     0.85786,     0.85886,     0.85986,     0.86086,     0.86186,     0.86286,     0.86386,
           0.86486,     0.86587,     0.86687,     0.86787,     0.86887,     0.86987,     0.87087,     0.87187,     0.87287,     0.87387,     0.87487,     0.87588,     0.87688,     0.87788,     0.87888,     0.87988,     0.88088,     0.88188,     0.88288,     0.88388,     0.88488,     0.88589,     0.88689,     0.88789,
           0.88889,     0.88989,     0.89089,     0.89189,     0.89289,     0.89389,     0.89489,      0.8959,      0.8969,      0.8979,      0.8989,      0.8999,      0.9009,      0.9019,      0.9029,      0.9039,      0.9049,     0.90591,     0.90691,     0.90791,     0.90891,     0.90991,     0.91091,     0.91191,
           0.91291,     0.91391,     0.91491,     0.91592,     0.91692,     0.91792,     0.91892,     0.91992,     0.92092,     0.92192,     0.92292,     0.92392,     0.92492,     0.92593,     0.92693,     0.92793,     0.92893,     0.92993,     0.93093,     0.93193,     0.93293,     0.93393,     0.93493,     0.93594,
           0.93694,     0.93794,     0.93894,     0.93994,     0.94094,     0.94194,     0.94294,     0.94394,     0.94494,     0.94595,     0.94695,     0.94795,     0.94895,     0.94995,     0.95095,     0.95195,     0.95295,     0.95395,     0.95495,     0.95596,     0.95696,     0.95796,     0.95896,     0.95996,
           0.96096,     0.96196,     0.96296,     0.96396,     0.96496,     0.96597,     0.96697,     0.96797,     0.96897,     0.96997,     0.97097,     0.97197,     0.97297,     0.97397,     0.97497,     0.97598,     0.97698,     0.97798,     0.97898,     0.97998,     0.98098,     0.98198,     0.98298,     0.98398,
           0.98498,     0.98599,     0.98699,     0.98799,     0.98899,     0.98999,     0.99099,     0.99199,     0.99299,     0.99399,     0.99499,       0.996,       0.997,       0.998,       0.999,           1]), array([[     0.2963,      0.2963,     0.30987, ...,           0,           0,           0],
       [   0.046784,    0.046784,     0.28964, ...,           0,           0,           0],
       [   0.034783,    0.034783,     0.19099, ...,           0,           0,           0],
       [    0.11538,     0.11538,     0.14143, ...,           0,           0,           0],
       [   0.025478,    0.025478,     0.13108, ...,           0,           0,           0],
       [       0.25,        0.25,     0.36781, ...,           0,           0,           0]]), 'Confidence', 'F1'], [array([          0,    0.001001,    0.002002,    0.003003,    0.004004,    0.005005,    0.006006,    0.007007,    0.008008,    0.009009,     0.01001,    0.011011,    0.012012,    0.013013,    0.014014,    0.015015,    0.016016,    0.017017,    0.018018,    0.019019,     0.02002,    0.021021,    0.022022,    0.023023,
          0.024024,    0.025025,    0.026026,    0.027027,    0.028028,    0.029029,     0.03003,    0.031031,    0.032032,    0.033033,    0.034034,    0.035035,    0.036036,    0.037037,    0.038038,    0.039039,     0.04004,    0.041041,    0.042042,    0.043043,    0.044044,    0.045045,    0.046046,    0.047047,
          0.048048,    0.049049,     0.05005,    0.051051,    0.052052,    0.053053,    0.054054,    0.055055,    0.056056,    0.057057,    0.058058,    0.059059,     0.06006,    0.061061,    0.062062,    0.063063,    0.064064,    0.065065,    0.066066,    0.067067,    0.068068,    0.069069,     0.07007,    0.071071,
          0.072072,    0.073073,    0.074074,    0.075075,    0.076076,    0.077077,    0.078078,    0.079079,     0.08008,    0.081081,    0.082082,    0.083083,    0.084084,    0.085085,    0.086086,    0.087087,    0.088088,    0.089089,     0.09009,    0.091091,    0.092092,    0.093093,    0.094094,    0.095095,
          0.096096,    0.097097,    0.098098,    0.099099,      0.1001,      0.1011,      0.1021,      0.1031,      0.1041,     0.10511,     0.10611,     0.10711,     0.10811,     0.10911,     0.11011,     0.11111,     0.11211,     0.11311,     0.11411,     0.11512,     0.11612,     0.11712,     0.11812,     0.11912,
           0.12012,     0.12112,     0.12212,     0.12312,     0.12412,     0.12513,     0.12613,     0.12713,     0.12813,     0.12913,     0.13013,     0.13113,     0.13213,     0.13313,     0.13413,     0.13514,     0.13614,     0.13714,     0.13814,     0.13914,     0.14014,     0.14114,     0.14214,     0.14314,
           0.14414,     0.14515,     0.14615,     0.14715,     0.14815,     0.14915,     0.15015,     0.15115,     0.15215,     0.15315,     0.15415,     0.15516,     0.15616,     0.15716,     0.15816,     0.15916,     0.16016,     0.16116,     0.16216,     0.16316,     0.16416,     0.16517,     0.16617,     0.16717,
           0.16817,     0.16917,     0.17017,     0.17117,     0.17217,     0.17317,     0.17417,     0.17518,     0.17618,     0.17718,     0.17818,     0.17918,     0.18018,     0.18118,     0.18218,     0.18318,     0.18418,     0.18519,     0.18619,     0.18719,     0.18819,     0.18919,     0.19019,     0.19119,
           0.19219,     0.19319,     0.19419,      0.1952,      0.1962,      0.1972,      0.1982,      0.1992,      0.2002,      0.2012,      0.2022,      0.2032,      0.2042,     0.20521,     0.20621,     0.20721,     0.20821,     0.20921,     0.21021,     0.21121,     0.21221,     0.21321,     0.21421,     0.21522,
           0.21622,     0.21722,     0.21822,     0.21922,     0.22022,     0.22122,     0.22222,     0.22322,     0.22422,     0.22523,     0.22623,     0.22723,     0.22823,     0.22923,     0.23023,     0.23123,     0.23223,     0.23323,     0.23423,     0.23524,     0.23624,     0.23724,     0.23824,     0.23924,
           0.24024,     0.24124,     0.24224,     0.24324,     0.24424,     0.24525,     0.24625,     0.24725,     0.24825,     0.24925,     0.25025,     0.25125,     0.25225,     0.25325,     0.25425,     0.25526,     0.25626,     0.25726,     0.25826,     0.25926,     0.26026,     0.26126,     0.26226,     0.26326,
           0.26426,     0.26527,     0.26627,     0.26727,     0.26827,     0.26927,     0.27027,     0.27127,     0.27227,     0.27327,     0.27427,     0.27528,     0.27628,     0.27728,     0.27828,     0.27928,     0.28028,     0.28128,     0.28228,     0.28328,     0.28428,     0.28529,     0.28629,     0.28729,
           0.28829,     0.28929,     0.29029,     0.29129,     0.29229,     0.29329,     0.29429,      0.2953,      0.2963,      0.2973,      0.2983,      0.2993,      0.3003,      0.3013,      0.3023,      0.3033,      0.3043,     0.30531,     0.30631,     0.30731,     0.30831,     0.30931,     0.31031,     0.31131,
           0.31231,     0.31331,     0.31431,     0.31532,     0.31632,     0.31732,     0.31832,     0.31932,     0.32032,     0.32132,     0.32232,     0.32332,     0.32432,     0.32533,     0.32633,     0.32733,     0.32833,     0.32933,     0.33033,     0.33133,     0.33233,     0.33333,     0.33433,     0.33534,
           0.33634,     0.33734,     0.33834,     0.33934,     0.34034,     0.34134,     0.34234,     0.34334,     0.34434,     0.34535,     0.34635,     0.34735,     0.34835,     0.34935,     0.35035,     0.35135,     0.35235,     0.35335,     0.35435,     0.35536,     0.35636,     0.35736,     0.35836,     0.35936,
           0.36036,     0.36136,     0.36236,     0.36336,     0.36436,     0.36537,     0.36637,     0.36737,     0.36837,     0.36937,     0.37037,     0.37137,     0.37237,     0.37337,     0.37437,     0.37538,     0.37638,     0.37738,     0.37838,     0.37938,     0.38038,     0.38138,     0.38238,     0.38338,
           0.38438,     0.38539,     0.38639,     0.38739,     0.38839,     0.38939,     0.39039,     0.39139,     0.39239,     0.39339,     0.39439,      0.3954,      0.3964,      0.3974,      0.3984,      0.3994,      0.4004,      0.4014,      0.4024,      0.4034,      0.4044,     0.40541,     0.40641,     0.40741,
           0.40841,     0.40941,     0.41041,     0.41141,     0.41241,     0.41341,     0.41441,     0.41542,     0.41642,     0.41742,     0.41842,     0.41942,     0.42042,     0.42142,     0.42242,     0.42342,     0.42442,     0.42543,     0.42643,     0.42743,     0.42843,     0.42943,     0.43043,     0.43143,
           0.43243,     0.43343,     0.43443,     0.43544,     0.43644,     0.43744,     0.43844,     0.43944,     0.44044,     0.44144,     0.44244,     0.44344,     0.44444,     0.44545,     0.44645,     0.44745,     0.44845,     0.44945,     0.45045,     0.45145,     0.45245,     0.45345,     0.45445,     0.45546,
           0.45646,     0.45746,     0.45846,     0.45946,     0.46046,     0.46146,     0.46246,     0.46346,     0.46446,     0.46547,     0.46647,     0.46747,     0.46847,     0.46947,     0.47047,     0.47147,     0.47247,     0.47347,     0.47447,     0.47548,     0.47648,     0.47748,     0.47848,     0.47948,
           0.48048,     0.48148,     0.48248,     0.48348,     0.48448,     0.48549,     0.48649,     0.48749,     0.48849,     0.48949,     0.49049,     0.49149,     0.49249,     0.49349,     0.49449,      0.4955,      0.4965,      0.4975,      0.4985,      0.4995,      0.5005,      0.5015,      0.5025,      0.5035,
            0.5045,     0.50551,     0.50651,     0.50751,     0.50851,     0.50951,     0.51051,     0.51151,     0.51251,     0.51351,     0.51451,     0.51552,     0.51652,     0.51752,     0.51852,     0.51952,     0.52052,     0.52152,     0.52252,     0.52352,     0.52452,     0.52553,     0.52653,     0.52753,
           0.52853,     0.52953,     0.53053,     0.53153,     0.53253,     0.53353,     0.53453,     0.53554,     0.53654,     0.53754,     0.53854,     0.53954,     0.54054,     0.54154,     0.54254,     0.54354,     0.54454,     0.54555,     0.54655,     0.54755,     0.54855,     0.54955,     0.55055,     0.55155,
           0.55255,     0.55355,     0.55455,     0.55556,     0.55656,     0.55756,     0.55856,     0.55956,     0.56056,     0.56156,     0.56256,     0.56356,     0.56456,     0.56557,     0.56657,     0.56757,     0.56857,     0.56957,     0.57057,     0.57157,     0.57257,     0.57357,     0.57457,     0.57558,
           0.57658,     0.57758,     0.57858,     0.57958,     0.58058,     0.58158,     0.58258,     0.58358,     0.58458,     0.58559,     0.58659,     0.58759,     0.58859,     0.58959,     0.59059,     0.59159,     0.59259,     0.59359,     0.59459,      0.5956,      0.5966,      0.5976,      0.5986,      0.5996,
            0.6006,      0.6016,      0.6026,      0.6036,      0.6046,     0.60561,     0.60661,     0.60761,     0.60861,     0.60961,     0.61061,     0.61161,     0.61261,     0.61361,     0.61461,     0.61562,     0.61662,     0.61762,     0.61862,     0.61962,     0.62062,     0.62162,     0.62262,     0.62362,
           0.62462,     0.62563,     0.62663,     0.62763,     0.62863,     0.62963,     0.63063,     0.63163,     0.63263,     0.63363,     0.63463,     0.63564,     0.63664,     0.63764,     0.63864,     0.63964,     0.64064,     0.64164,     0.64264,     0.64364,     0.64464,     0.64565,     0.64665,     0.64765,
           0.64865,     0.64965,     0.65065,     0.65165,     0.65265,     0.65365,     0.65465,     0.65566,     0.65666,     0.65766,     0.65866,     0.65966,     0.66066,     0.66166,     0.66266,     0.66366,     0.66466,     0.66567,     0.66667,     0.66767,     0.66867,     0.66967,     0.67067,     0.67167,
           0.67267,     0.67367,     0.67467,     0.67568,     0.67668,     0.67768,     0.67868,     0.67968,     0.68068,     0.68168,     0.68268,     0.68368,     0.68468,     0.68569,     0.68669,     0.68769,     0.68869,     0.68969,     0.69069,     0.69169,     0.69269,     0.69369,     0.69469,      0.6957,
            0.6967,      0.6977,      0.6987,      0.6997,      0.7007,      0.7017,      0.7027,      0.7037,      0.7047,     0.70571,     0.70671,     0.70771,     0.70871,     0.70971,     0.71071,     0.71171,     0.71271,     0.71371,     0.71471,     0.71572,     0.71672,     0.71772,     0.71872,     0.71972,
           0.72072,     0.72172,     0.72272,     0.72372,     0.72472,     0.72573,     0.72673,     0.72773,     0.72873,     0.72973,     0.73073,     0.73173,     0.73273,     0.73373,     0.73473,     0.73574,     0.73674,     0.73774,     0.73874,     0.73974,     0.74074,     0.74174,     0.74274,     0.74374,
           0.74474,     0.74575,     0.74675,     0.74775,     0.74875,     0.74975,     0.75075,     0.75175,     0.75275,     0.75375,     0.75475,     0.75576,     0.75676,     0.75776,     0.75876,     0.75976,     0.76076,     0.76176,     0.76276,     0.76376,     0.76476,     0.76577,     0.76677,     0.76777,
           0.76877,     0.76977,     0.77077,     0.77177,     0.77277,     0.77377,     0.77477,     0.77578,     0.77678,     0.77778,     0.77878,     0.77978,     0.78078,     0.78178,     0.78278,     0.78378,     0.78478,     0.78579,     0.78679,     0.78779,     0.78879,     0.78979,     0.79079,     0.79179,
           0.79279,     0.79379,     0.79479,      0.7958,      0.7968,      0.7978,      0.7988,      0.7998,      0.8008,      0.8018,      0.8028,      0.8038,      0.8048,     0.80581,     0.80681,     0.80781,     0.80881,     0.80981,     0.81081,     0.81181,     0.81281,     0.81381,     0.81481,     0.81582,
           0.81682,     0.81782,     0.81882,     0.81982,     0.82082,     0.82182,     0.82282,     0.82382,     0.82482,     0.82583,     0.82683,     0.82783,     0.82883,     0.82983,     0.83083,     0.83183,     0.83283,     0.83383,     0.83483,     0.83584,     0.83684,     0.83784,     0.83884,     0.83984,
           0.84084,     0.84184,     0.84284,     0.84384,     0.84484,     0.84585,     0.84685,     0.84785,     0.84885,     0.84985,     0.85085,     0.85185,     0.85285,     0.85385,     0.85485,     0.85586,     0.85686,     0.85786,     0.85886,     0.85986,     0.86086,     0.86186,     0.86286,     0.86386,
           0.86486,     0.86587,     0.86687,     0.86787,     0.86887,     0.86987,     0.87087,     0.87187,     0.87287,     0.87387,     0.87487,     0.87588,     0.87688,     0.87788,     0.87888,     0.87988,     0.88088,     0.88188,     0.88288,     0.88388,     0.88488,     0.88589,     0.88689,     0.88789,
           0.88889,     0.88989,     0.89089,     0.89189,     0.89289,     0.89389,     0.89489,      0.8959,      0.8969,      0.8979,      0.8989,      0.8999,      0.9009,      0.9019,      0.9029,      0.9039,      0.9049,     0.90591,     0.90691,     0.90791,     0.90891,     0.90991,     0.91091,     0.91191,
           0.91291,     0.91391,     0.91491,     0.91592,     0.91692,     0.91792,     0.91892,     0.91992,     0.92092,     0.92192,     0.92292,     0.92392,     0.92492,     0.92593,     0.92693,     0.92793,     0.92893,     0.92993,     0.93093,     0.93193,     0.93293,     0.93393,     0.93493,     0.93594,
           0.93694,     0.93794,     0.93894,     0.93994,     0.94094,     0.94194,     0.94294,     0.94394,     0.94494,     0.94595,     0.94695,     0.94795,     0.94895,     0.94995,     0.95095,     0.95195,     0.95295,     0.95395,     0.95495,     0.95596,     0.95696,     0.95796,     0.95896,     0.95996,
           0.96096,     0.96196,     0.96296,     0.96396,     0.96496,     0.96597,     0.96697,     0.96797,     0.96897,     0.96997,     0.97097,     0.97197,     0.97297,     0.97397,     0.97497,     0.97598,     0.97698,     0.97798,     0.97898,     0.97998,     0.98098,     0.98198,     0.98298,     0.98398,
           0.98498,     0.98599,     0.98699,     0.98799,     0.98899,     0.98999,     0.99099,     0.99199,     0.99299,     0.99399,     0.99499,       0.996,       0.997,       0.998,       0.999,           1]), array([[    0.17778,     0.17778,     0.18764, ...,           1,           1,           1],
       [   0.023952,    0.023952,     0.16935, ...,           1,           1,           1],
       [   0.017699,    0.017699,     0.10558, ...,           1,           1,           1],
       [   0.061224,    0.061224,    0.076098, ...,           1,           1,           1],
       [   0.012903,    0.012903,    0.070135, ...,           1,           1,           1],
       [    0.14286,     0.14286,     0.22534, ...,           1,           1,           1]]), 'Confidence', 'Precision'], [array([          0,    0.001001,    0.002002,    0.003003,    0.004004,    0.005005,    0.006006,    0.007007,    0.008008,    0.009009,     0.01001,    0.011011,    0.012012,    0.013013,    0.014014,    0.015015,    0.016016,    0.017017,    0.018018,    0.019019,     0.02002,    0.021021,    0.022022,    0.023023,
          0.024024,    0.025025,    0.026026,    0.027027,    0.028028,    0.029029,     0.03003,    0.031031,    0.032032,    0.033033,    0.034034,    0.035035,    0.036036,    0.037037,    0.038038,    0.039039,     0.04004,    0.041041,    0.042042,    0.043043,    0.044044,    0.045045,    0.046046,    0.047047,
          0.048048,    0.049049,     0.05005,    0.051051,    0.052052,    0.053053,    0.054054,    0.055055,    0.056056,    0.057057,    0.058058,    0.059059,     0.06006,    0.061061,    0.062062,    0.063063,    0.064064,    0.065065,    0.066066,    0.067067,    0.068068,    0.069069,     0.07007,    0.071071,
          0.072072,    0.073073,    0.074074,    0.075075,    0.076076,    0.077077,    0.078078,    0.079079,     0.08008,    0.081081,    0.082082,    0.083083,    0.084084,    0.085085,    0.086086,    0.087087,    0.088088,    0.089089,     0.09009,    0.091091,    0.092092,    0.093093,    0.094094,    0.095095,
          0.096096,    0.097097,    0.098098,    0.099099,      0.1001,      0.1011,      0.1021,      0.1031,      0.1041,     0.10511,     0.10611,     0.10711,     0.10811,     0.10911,     0.11011,     0.11111,     0.11211,     0.11311,     0.11411,     0.11512,     0.11612,     0.11712,     0.11812,     0.11912,
           0.12012,     0.12112,     0.12212,     0.12312,     0.12412,     0.12513,     0.12613,     0.12713,     0.12813,     0.12913,     0.13013,     0.13113,     0.13213,     0.13313,     0.13413,     0.13514,     0.13614,     0.13714,     0.13814,     0.13914,     0.14014,     0.14114,     0.14214,     0.14314,
           0.14414,     0.14515,     0.14615,     0.14715,     0.14815,     0.14915,     0.15015,     0.15115,     0.15215,     0.15315,     0.15415,     0.15516,     0.15616,     0.15716,     0.15816,     0.15916,     0.16016,     0.16116,     0.16216,     0.16316,     0.16416,     0.16517,     0.16617,     0.16717,
           0.16817,     0.16917,     0.17017,     0.17117,     0.17217,     0.17317,     0.17417,     0.17518,     0.17618,     0.17718,     0.17818,     0.17918,     0.18018,     0.18118,     0.18218,     0.18318,     0.18418,     0.18519,     0.18619,     0.18719,     0.18819,     0.18919,     0.19019,     0.19119,
           0.19219,     0.19319,     0.19419,      0.1952,      0.1962,      0.1972,      0.1982,      0.1992,      0.2002,      0.2012,      0.2022,      0.2032,      0.2042,     0.20521,     0.20621,     0.20721,     0.20821,     0.20921,     0.21021,     0.21121,     0.21221,     0.21321,     0.21421,     0.21522,
           0.21622,     0.21722,     0.21822,     0.21922,     0.22022,     0.22122,     0.22222,     0.22322,     0.22422,     0.22523,     0.22623,     0.22723,     0.22823,     0.22923,     0.23023,     0.23123,     0.23223,     0.23323,     0.23423,     0.23524,     0.23624,     0.23724,     0.23824,     0.23924,
           0.24024,     0.24124,     0.24224,     0.24324,     0.24424,     0.24525,     0.24625,     0.24725,     0.24825,     0.24925,     0.25025,     0.25125,     0.25225,     0.25325,     0.25425,     0.25526,     0.25626,     0.25726,     0.25826,     0.25926,     0.26026,     0.26126,     0.26226,     0.26326,
           0.26426,     0.26527,     0.26627,     0.26727,     0.26827,     0.26927,     0.27027,     0.27127,     0.27227,     0.27327,     0.27427,     0.27528,     0.27628,     0.27728,     0.27828,     0.27928,     0.28028,     0.28128,     0.28228,     0.28328,     0.28428,     0.28529,     0.28629,     0.28729,
           0.28829,     0.28929,     0.29029,     0.29129,     0.29229,     0.29329,     0.29429,      0.2953,      0.2963,      0.2973,      0.2983,      0.2993,      0.3003,      0.3013,      0.3023,      0.3033,      0.3043,     0.30531,     0.30631,     0.30731,     0.30831,     0.30931,     0.31031,     0.31131,
           0.31231,     0.31331,     0.31431,     0.31532,     0.31632,     0.31732,     0.31832,     0.31932,     0.32032,     0.32132,     0.32232,     0.32332,     0.32432,     0.32533,     0.32633,     0.32733,     0.32833,     0.32933,     0.33033,     0.33133,     0.33233,     0.33333,     0.33433,     0.33534,
           0.33634,     0.33734,     0.33834,     0.33934,     0.34034,     0.34134,     0.34234,     0.34334,     0.34434,     0.34535,     0.34635,     0.34735,     0.34835,     0.34935,     0.35035,     0.35135,     0.35235,     0.35335,     0.35435,     0.35536,     0.35636,     0.35736,     0.35836,     0.35936,
           0.36036,     0.36136,     0.36236,     0.36336,     0.36436,     0.36537,     0.36637,     0.36737,     0.36837,     0.36937,     0.37037,     0.37137,     0.37237,     0.37337,     0.37437,     0.37538,     0.37638,     0.37738,     0.37838,     0.37938,     0.38038,     0.38138,     0.38238,     0.38338,
           0.38438,     0.38539,     0.38639,     0.38739,     0.38839,     0.38939,     0.39039,     0.39139,     0.39239,     0.39339,     0.39439,      0.3954,      0.3964,      0.3974,      0.3984,      0.3994,      0.4004,      0.4014,      0.4024,      0.4034,      0.4044,     0.40541,     0.40641,     0.40741,
           0.40841,     0.40941,     0.41041,     0.41141,     0.41241,     0.41341,     0.41441,     0.41542,     0.41642,     0.41742,     0.41842,     0.41942,     0.42042,     0.42142,     0.42242,     0.42342,     0.42442,     0.42543,     0.42643,     0.42743,     0.42843,     0.42943,     0.43043,     0.43143,
           0.43243,     0.43343,     0.43443,     0.43544,     0.43644,     0.43744,     0.43844,     0.43944,     0.44044,     0.44144,     0.44244,     0.44344,     0.44444,     0.44545,     0.44645,     0.44745,     0.44845,     0.44945,     0.45045,     0.45145,     0.45245,     0.45345,     0.45445,     0.45546,
           0.45646,     0.45746,     0.45846,     0.45946,     0.46046,     0.46146,     0.46246,     0.46346,     0.46446,     0.46547,     0.46647,     0.46747,     0.46847,     0.46947,     0.47047,     0.47147,     0.47247,     0.47347,     0.47447,     0.47548,     0.47648,     0.47748,     0.47848,     0.47948,
           0.48048,     0.48148,     0.48248,     0.48348,     0.48448,     0.48549,     0.48649,     0.48749,     0.48849,     0.48949,     0.49049,     0.49149,     0.49249,     0.49349,     0.49449,      0.4955,      0.4965,      0.4975,      0.4985,      0.4995,      0.5005,      0.5015,      0.5025,      0.5035,
            0.5045,     0.50551,     0.50651,     0.50751,     0.50851,     0.50951,     0.51051,     0.51151,     0.51251,     0.51351,     0.51451,     0.51552,     0.51652,     0.51752,     0.51852,     0.51952,     0.52052,     0.52152,     0.52252,     0.52352,     0.52452,     0.52553,     0.52653,     0.52753,
           0.52853,     0.52953,     0.53053,     0.53153,     0.53253,     0.53353,     0.53453,     0.53554,     0.53654,     0.53754,     0.53854,     0.53954,     0.54054,     0.54154,     0.54254,     0.54354,     0.54454,     0.54555,     0.54655,     0.54755,     0.54855,     0.54955,     0.55055,     0.55155,
           0.55255,     0.55355,     0.55455,     0.55556,     0.55656,     0.55756,     0.55856,     0.55956,     0.56056,     0.56156,     0.56256,     0.56356,     0.56456,     0.56557,     0.56657,     0.56757,     0.56857,     0.56957,     0.57057,     0.57157,     0.57257,     0.57357,     0.57457,     0.57558,
           0.57658,     0.57758,     0.57858,     0.57958,     0.58058,     0.58158,     0.58258,     0.58358,     0.58458,     0.58559,     0.58659,     0.58759,     0.58859,     0.58959,     0.59059,     0.59159,     0.59259,     0.59359,     0.59459,      0.5956,      0.5966,      0.5976,      0.5986,      0.5996,
            0.6006,      0.6016,      0.6026,      0.6036,      0.6046,     0.60561,     0.60661,     0.60761,     0.60861,     0.60961,     0.61061,     0.61161,     0.61261,     0.61361,     0.61461,     0.61562,     0.61662,     0.61762,     0.61862,     0.61962,     0.62062,     0.62162,     0.62262,     0.62362,
           0.62462,     0.62563,     0.62663,     0.62763,     0.62863,     0.62963,     0.63063,     0.63163,     0.63263,     0.63363,     0.63463,     0.63564,     0.63664,     0.63764,     0.63864,     0.63964,     0.64064,     0.64164,     0.64264,     0.64364,     0.64464,     0.64565,     0.64665,     0.64765,
           0.64865,     0.64965,     0.65065,     0.65165,     0.65265,     0.65365,     0.65465,     0.65566,     0.65666,     0.65766,     0.65866,     0.65966,     0.66066,     0.66166,     0.66266,     0.66366,     0.66466,     0.66567,     0.66667,     0.66767,     0.66867,     0.66967,     0.67067,     0.67167,
           0.67267,     0.67367,     0.67467,     0.67568,     0.67668,     0.67768,     0.67868,     0.67968,     0.68068,     0.68168,     0.68268,     0.68368,     0.68468,     0.68569,     0.68669,     0.68769,     0.68869,     0.68969,     0.69069,     0.69169,     0.69269,     0.69369,     0.69469,      0.6957,
            0.6967,      0.6977,      0.6987,      0.6997,      0.7007,      0.7017,      0.7027,      0.7037,      0.7047,     0.70571,     0.70671,     0.70771,     0.70871,     0.70971,     0.71071,     0.71171,     0.71271,     0.71371,     0.71471,     0.71572,     0.71672,     0.71772,     0.71872,     0.71972,
           0.72072,     0.72172,     0.72272,     0.72372,     0.72472,     0.72573,     0.72673,     0.72773,     0.72873,     0.72973,     0.73073,     0.73173,     0.73273,     0.73373,     0.73473,     0.73574,     0.73674,     0.73774,     0.73874,     0.73974,     0.74074,     0.74174,     0.74274,     0.74374,
           0.74474,     0.74575,     0.74675,     0.74775,     0.74875,     0.74975,     0.75075,     0.75175,     0.75275,     0.75375,     0.75475,     0.75576,     0.75676,     0.75776,     0.75876,     0.75976,     0.76076,     0.76176,     0.76276,     0.76376,     0.76476,     0.76577,     0.76677,     0.76777,
           0.76877,     0.76977,     0.77077,     0.77177,     0.77277,     0.77377,     0.77477,     0.77578,     0.77678,     0.77778,     0.77878,     0.77978,     0.78078,     0.78178,     0.78278,     0.78378,     0.78478,     0.78579,     0.78679,     0.78779,     0.78879,     0.78979,     0.79079,     0.79179,
           0.79279,     0.79379,     0.79479,      0.7958,      0.7968,      0.7978,      0.7988,      0.7998,      0.8008,      0.8018,      0.8028,      0.8038,      0.8048,     0.80581,     0.80681,     0.80781,     0.80881,     0.80981,     0.81081,     0.81181,     0.81281,     0.81381,     0.81481,     0.81582,
           0.81682,     0.81782,     0.81882,     0.81982,     0.82082,     0.82182,     0.82282,     0.82382,     0.82482,     0.82583,     0.82683,     0.82783,     0.82883,     0.82983,     0.83083,     0.83183,     0.83283,     0.83383,     0.83483,     0.83584,     0.83684,     0.83784,     0.83884,     0.83984,
           0.84084,     0.84184,     0.84284,     0.84384,     0.84484,     0.84585,     0.84685,     0.84785,     0.84885,     0.84985,     0.85085,     0.85185,     0.85285,     0.85385,     0.85485,     0.85586,     0.85686,     0.85786,     0.85886,     0.85986,     0.86086,     0.86186,     0.86286,     0.86386,
           0.86486,     0.86587,     0.86687,     0.86787,     0.86887,     0.86987,     0.87087,     0.87187,     0.87287,     0.87387,     0.87487,     0.87588,     0.87688,     0.87788,     0.87888,     0.87988,     0.88088,     0.88188,     0.88288,     0.88388,     0.88488,     0.88589,     0.88689,     0.88789,
           0.88889,     0.88989,     0.89089,     0.89189,     0.89289,     0.89389,     0.89489,      0.8959,      0.8969,      0.8979,      0.8989,      0.8999,      0.9009,      0.9019,      0.9029,      0.9039,      0.9049,     0.90591,     0.90691,     0.90791,     0.90891,     0.90991,     0.91091,     0.91191,
           0.91291,     0.91391,     0.91491,     0.91592,     0.91692,     0.91792,     0.91892,     0.91992,     0.92092,     0.92192,     0.92292,     0.92392,     0.92492,     0.92593,     0.92693,     0.92793,     0.92893,     0.92993,     0.93093,     0.93193,     0.93293,     0.93393,     0.93493,     0.93594,
           0.93694,     0.93794,     0.93894,     0.93994,     0.94094,     0.94194,     0.94294,     0.94394,     0.94494,     0.94595,     0.94695,     0.94795,     0.94895,     0.94995,     0.95095,     0.95195,     0.95295,     0.95395,     0.95495,     0.95596,     0.95696,     0.95796,     0.95896,     0.95996,
           0.96096,     0.96196,     0.96296,     0.96396,     0.96496,     0.96597,     0.96697,     0.96797,     0.96897,     0.96997,     0.97097,     0.97197,     0.97297,     0.97397,     0.97497,     0.97598,     0.97698,     0.97798,     0.97898,     0.97998,     0.98098,     0.98198,     0.98298,     0.98398,
           0.98498,     0.98599,     0.98699,     0.98799,     0.98899,     0.98999,     0.99099,     0.99199,     0.99299,     0.99399,     0.99499,       0.996,       0.997,       0.998,       0.999,           1]), array([[    0.88889,     0.88889,     0.88889, ...,           0,           0,           0],
       [          1,           1,           1, ...,           0,           0,           0],
       [          1,           1,           1, ...,           0,           0,           0],
       [          1,           1,           1, ...,           0,           0,           0],
       [          1,           1,           1, ...,           0,           0,           0],
       [          1,           1,           1, ...,           0,           0,           0]]), 'Confidence', 'Recall']]
fitness: 0.6812084136846558
keys: ['metrics/precision(B)', 'metrics/recall(B)', 'metrics/mAP50(B)', 'metrics/mAP50-95(B)']
maps: array([    0.60261,     0.48529,     0.71323,     0.91293,     0.47746,     0.78356,     0.66251])
names: {0: 'Cucumber', 1: 'Snail', 2: 'Snail Food', 3: 'Water Bowl', 4: 'Hydrometer', 5: 'Lettuce', 6: 'Tunnel'}
plot: True
results_dict: {'metrics/precision(B)': 0.8797209763233896, 'metrics/recall(B)': 0.5019556244463792, 'metrics/mAP50(B)': 0.8494860101010101, 'metrics/mAP50-95(B)': 0.6625109029717274, 'fitness': 0.6812084136846558}
save_dir: PosixPath('/opt/homebrew/runs/detect/snail-detection32')
speed: {'preprocess': 0.33724308013916016, 'inference': 48.05099964141846, 'loss': 0.0, 'postprocess': 2.0505189895629883}
task: 'detect'
In [ ]:
import imageio
import cv2
from ultralytics import YOLO
import matplotlib.pyplot as plt

# Step 1: Extract frames from the GIF
gif_path = 'snail_tracking_full_fast.gif'
frames = imageio.mimread(gif_path)

# Load the YOLO model
model = YOLO('/opt/homebrew/runs/detect/snail-detection3/weights/best.pt')  # Replace with the path to your trained YOLO model

# Step 2: Run object detection on each frame
detected_frames = []
for i, frame in enumerate(frames):
    # Convert the frame to OpenCV format (BGR)
    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Perform object detection
    results = model.predict(source=frame, show=False)  # Disable auto display

    # Annotate the frame with detected objects
    annotated_frame = results[0].plot()
    
    # Convert back to RGB for imageio
    annotated_frame_rgb = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB)
    detected_frames.append(annotated_frame_rgb)

    print(f"Processed frame {i+1}/{len(frames)}")

# Step 3: Save the annotated frames as a new GIF
output_gif_path = 'snail_detection_output.gif'
imageio.mimsave(output_gif_path, detected_frames, duration=1)

print(f"Saved output GIF to {output_gif_path}")

# Step 4: Display one of the detected frames
plt.imshow(detected_frames[0])
plt.axis('off')
plt.show()
0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 51.7ms
Speed: 3.4ms preprocess, 51.7ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 1/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 96.8ms
Speed: 1.9ms preprocess, 96.8ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 2/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 44.7ms
Speed: 1.8ms preprocess, 44.7ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 3/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 40.3ms
Speed: 2.4ms preprocess, 40.3ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 4/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 43.8ms
Speed: 1.7ms preprocess, 43.8ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 5/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 39.5ms
Speed: 1.3ms preprocess, 39.5ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 6/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 38.3ms
Speed: 1.5ms preprocess, 38.3ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 7/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 33.0ms
Speed: 1.4ms preprocess, 33.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 8/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 32.2ms
Speed: 1.2ms preprocess, 32.2ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 9/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 47.5ms
Speed: 2.1ms preprocess, 47.5ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 10/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 42.7ms
Speed: 1.6ms preprocess, 42.7ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 11/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 65.8ms
Speed: 1.4ms preprocess, 65.8ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 12/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 33.4ms
Speed: 1.2ms preprocess, 33.4ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 13/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 59.1ms
Speed: 1.8ms preprocess, 59.1ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 14/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 59.8ms
Speed: 1.2ms preprocess, 59.8ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 15/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 50.5ms
Speed: 2.3ms preprocess, 50.5ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 16/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 39.1ms
Speed: 2.1ms preprocess, 39.1ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 17/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 38.6ms
Speed: 1.2ms preprocess, 38.6ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 18/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 34.0ms
Speed: 1.3ms preprocess, 34.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 19/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 62.0ms
Speed: 1.8ms preprocess, 62.0ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 20/20
Saved output GIF to snail_detection_output.gif
No description has been provided for this image
In [ ]:
import imageio
import cv2
from ultralytics import YOLO
import matplotlib.pyplot as plt

# Step 1: Extract frames from the GIF
gif_path = 'snail_tracking_full_fast.gif'
frames = imageio.mimread(gif_path)

# Load the YOLO model
model = YOLO('/opt/homebrew/runs/detect/snail-detection3/weights/best.pt')  # Replace with the path to your trained YOLO model

# Step 2: Run object detection on each frame
detected_frames = []
for i, frame in enumerate(frames):
    # Convert the frame to OpenCV format (BGR)
    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Perform object detection
    results = model.predict(frame, show=False)  # Disable auto display

    # Annotate the frame with detected objects
    annotated_frame = results[0].plot()
    
    # Convert back to RGB for imageio
    annotated_frame_rgb = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB)
    detected_frames.append(annotated_frame_rgb)

    print(f"Processed frame {i+1}/{len(frames)}")

# Step 3: Save the annotated frames as a new GIF
output_gif_path = 'snail_detection_output.gif'
imageio.mimsave(output_gif_path, detected_frames, duration=1)

print(f"Saved output GIF to {output_gif_path}")

# Step 4: Display one of the detected frames
plt.imshow(detected_frames[0])
plt.axis('off')
plt.show()
0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 94.7ms
Speed: 2.6ms preprocess, 94.7ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 1/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 44.3ms
Speed: 2.4ms preprocess, 44.3ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 2/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 49.4ms
Speed: 2.0ms preprocess, 49.4ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 3/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 41.7ms
Speed: 1.5ms preprocess, 41.7ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 4/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 46.1ms
Speed: 2.3ms preprocess, 46.1ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 5/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 46.8ms
Speed: 1.9ms preprocess, 46.8ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 6/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 41.5ms
Speed: 1.3ms preprocess, 41.5ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 7/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 45.0ms
Speed: 2.2ms preprocess, 45.0ms inference, 2.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 8/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 59.3ms
Speed: 8.5ms preprocess, 59.3ms inference, 2.0ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 9/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 41.6ms
Speed: 1.3ms preprocess, 41.6ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 10/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 38.1ms
Speed: 1.3ms preprocess, 38.1ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 11/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 34.5ms
Speed: 1.9ms preprocess, 34.5ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 12/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 42.4ms
Speed: 1.3ms preprocess, 42.4ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 13/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 47.4ms
Speed: 1.4ms preprocess, 47.4ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 14/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 51.0ms
Speed: 2.0ms preprocess, 51.0ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 15/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 50.4ms
Speed: 1.5ms preprocess, 50.4ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 16/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 48.4ms
Speed: 1.8ms preprocess, 48.4ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 17/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 41.4ms
Speed: 1.4ms preprocess, 41.4ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 18/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 54.0ms
Speed: 1.5ms preprocess, 54.0ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 19/20

0: 384x640 1 Cucumber, 1 Water Bowl, 1 Lettuce, 50.0ms
Speed: 1.4ms preprocess, 50.0ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)
Processed frame 20/20
Saved output GIF to snail_detection_output.gif
No description has been provided for this image
In [ ]: